Programmable controllers are a common type of industrial computer for operating a wide variety of manufacturing equipment, such as assembly lines and machine tools, in accordance with a stored control program. The program comprises a series of process control instructions which are read out and executed to examine the condition of selected sensing devices on the controlled equipment, and to energize or deenergize selected operating devices contingent upon the status of one or more of the examined sensing devices. Very efficient techniques have been devised for gathering input data from sensing devices and for sending output data to control the operating devices. The efficiency of these data exchange techniques is critical to the effective control of the manufacturing equipment.
In order to provide the greatest flexibility in physically configuring a programmable controller for operating a specific piece of manufacturing equipment, a programmable controller typically consists of a rack with a number of slots into which various functional modules can be inserted. A backplane of the rack has connectors in each slot and conductors which electrically couple all of the functional modules allowing for the exchange of control and data signals there between. Modules have been developed to perform a wide variety of functions, such as I/O modules which interface to the sensing and operating devices or modules which enable communication with other programmable controllers. Certain I/O modules are classified as discrete I/O modules, in that they convert signals for a set of discrete sensing and operating devices on a controlled machine or process. The operation of the discrete I/O device is associated with a single (discrete) electrical signal. This signal is generated at two different signal levels to represent the ON state and the OFF state of an input device or to control the ON state or the OFF state of an output device. Typical discrete input devices include pushbuttons, limit switches, and relay contacts. Common discrete output devices include solenoids, energizing coils in electromagnetic relays and actuating sections of solid state relays.
The digital values for discrete I/O devices can be combined into eight-bit groups known as "bytes" and communicated to and from a programmable controller processor during an I/O scan routine in which each I/O module is addressed in turn for data transfer.
The term "word" as used in this document is a broad term encompassing data groups of four bits, eight bits, sixteen bits (two bytes) or other sizes used in the computer arts, while the term "byte" refers to a unit of data with a specific size of eight bits. The term "file" shall refer to a group of data with two or more bytes of data associated with a single starting address in memory or a single I/O address. A file of data is contrasted to a group of discrete bytes of data in that a single address is used to access a file, whereas separate addresses are used to access each discrete byte of data.
Another category of I/O modules known in the art of programmable controllers are word-oriented I/O modules. These require conversion of an A.C. or a D.C. analog signal level to at least an eight-bit digital value and sometimes to ten-bit or twelve-bit digital values. With the introduction of word-oriented modules, additional methods of I/O communication have been developed to transfer many bytes of I/O data in a single block or file between an individual I/O module and the programmable controller processor. For example, when a temperature sensor is connected to the programmable controller, a module must convert its analog signal representing the sensed temperature into a multiple bit digital value. This digital representation of the temperature may be greater than eight bits in resolution requiring at least two bytes of data to be sent between the I/O module and the programmable controller processor in order to convey the sensed temperature to the processor. Other I/O modules have been developed to acquire information from conventional bar code readers or RF transponder tag readers and provide that information to the programmable controller processor. In these cases, many bytes of data may have to be used to represent that information.
Depending upon the particular type of manufacturing equipment or process to be controlled, the user is able to select from a wide inventory of different types of I/O modules and modules for performing additional functions. Thus, a variety of different types of modules may be incorporated into any single programmable controller. It is important that the processor module have a record of the exact types of modules placed in each slot of the rack so that proper communication can be established between the processor and each functional module in the rack. Heretofore, this information about the I/O modules typically was manually provided by the user entering the data into a terminal coupled to the processor module. This manual process was error prone in that the user may enter a wrong module designation. In addition, during system maintenance or replacement of a defective module, the wrong type of module could be placed in a given slot, thus, conflicting with the configuration information stored in the processor.
Furthermore, modules of a given type are periodically revised in terms of both hardware and software which is executed in the module. Such revisions may alter the operation of the module in a way which must be recognized by the processor module so that proper communication and operation can occur.
As I/O modules became more sophisticated, a certain degree of error detection was incorporated within them. In order to take full advantage of the internal diagnostic capabilities being incorporated into these sophisticated I/O modules, a mechanism should be provided to enable the processor module to detect the results of such diagnostics, which are not part of the normal discrete I/O data exchanged between the modules. However, the proper control of the manufacturing equipment or process may require rapid access to the input data from the sensing devices and the rapid output of control data to the operating devices. This access to the sensing and operating devices in many critical control processes might be adversely affected by the acquisition of diagnostic data from the functional modules unless proper safeguard procedures against such adverse affects were not incorporated into the programmable controller.